package com.yxq.mdt.app.modules.socialcontact.model;

import com.yxq.mdt.app.modules.personal.bean.MainPersonTokenBean;
import com.yxq.mdt.app.modules.personal.bean.MainPersonalBean;
import com.yxq.mdt.app.modules.personal.bean.MainPersonalStateBean;
import com.yxq.mdt.app.modules.personal.bean.MyPersonalBean;
import com.yxq.mdt.app.modules.publish.ui.bean.PublishListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.AddCommentBean;
import com.yxq.mdt.app.modules.socialcontact.bean.AttentionManAndDynamicBean;
import com.yxq.mdt.app.modules.socialcontact.bean.BrowseListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.ByPageListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.CircleTopicListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.CommunityCentreBean;
import com.yxq.mdt.app.modules.socialcontact.bean.GiftResultBean;
import com.yxq.mdt.app.modules.socialcontact.bean.GivePresentBean;
import com.yxq.mdt.app.modules.socialcontact.bean.GroupDetailBean;
import com.yxq.mdt.app.modules.socialcontact.bean.GroupTopicListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.HomeTopicListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.MainSocialCircleBean;
import com.yxq.mdt.app.modules.socialcontact.bean.MainSocialContactRecommendBean;
import com.yxq.mdt.app.modules.socialcontact.bean.MainSocialHeadBean;
import com.yxq.mdt.app.modules.socialcontact.bean.MainSocialTopBean;
import com.yxq.mdt.app.modules.socialcontact.bean.NearManAndDynamicTopicBean;
import com.yxq.mdt.app.modules.socialcontact.bean.PerfectBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SelectNearbyListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SocialAllListMember;
import com.yxq.mdt.app.modules.socialcontact.bean.SocialContactAllTopicsBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SocialPersonalHomepageBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SocialPersonalMyHomepageBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SocialStateGiveListLikeBean;
import com.yxq.mdt.app.modules.socialcontact.bean.SubscribersListBean;
import com.yxq.mdt.app.modules.socialcontact.bean.VideoTopicBean;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;

public interface MainSocialContactApi {
    /**
     * 获取个人信息
     *
     * @return
     */
    @GET("/lbs/gs/user/getMyGaUserExtVoById")
    Observable<MyPersonalBean> getPersonalModel(@Query("token") String token);

    /**
     * 获取token
     *
     * @param userId
     * @return
     */
    @POST("/lbs/user/createToken")
    @FormUrlEncoded
    Observable<MainPersonTokenBean> getToken(@Field("userId") String userId);

    /**
     * 获取社区推荐列表
     *
     * @return
     */
    @GET("/lbs/gs/home/maybeInterest")
    Observable<MainSocialTopBean> getMaybeInterest(@Query("pageSize") int pageSize, @Query("pageNum") int pageNum, @Query("hasMobile") int hasMobile, @Query("professionId") int professionId);

    /**
     * 关注/取消关注 喜欢/不喜欢
     */
    @POST("/lbs/gs/user/saveUsersRelation")
    @FormUrlEncoded
    Observable<String> setInterestRelation(@Field("toUserId") String toUserId, @Field("enabled") int enabled, @Field("CharacterTypeHelper") int type);

    /**
     * 推荐圈子
     */
    @GET("/lbs/gsGroup/selectByReferrerList")
    Observable<MainSocialCircleBean> getRecommendGroup(@Query("pageNum") String pageNum, @Query("pageSize") String pageSize);

    /**
     * 全部话题
     */
    @GET("/lbs/gs/topic/getRecommendTopics")
    Observable<SocialContactAllTopicsBean> getRecommendTopicsList();

    /**
     * 社区首页获取推荐圈子列表
     */
    @GET("/lbs/gs/home/getRecommendGroup")
    Observable<CommunityCentreBean> getHomeRecommendGroup(@Query("pageNum") String pageNum, @Query("pageSize") String pageSize);

    /**
     * 圈子首页
     */
    @GET("/lbs/gsGroup/detail")
    Observable<MainSocialHeadBean> getRecommendGroupDetail(@Query("id") String id);

    /**
     * 社区首页推荐动态列表
     */
    @GET("/lbs/user/getTopic")
    Observable<MainSocialContactRecommendBean> getCommunityRecommendList(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 社区首页附近列表
     */
    @GET("/lbs/gs/home/getNearManAndDynamic")
    Observable<String> getNearManAndDynamic(@Query("mapLng") String mapLng, @Query("mapLat") String mapLat);

    /**
     * 社区首页附近列表动态
     */
    @GET("/lbs/gs/home/getNearManAndDynamicTopic")
    Observable<NearManAndDynamicTopicBean> getNearManAndDynamicTopic(@Query("mapLng") String mapLng, @Query("mapLat") String mapLat, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 社区首页视频动态
     */
    @GET("/lbs/user/getVideoTopic")
    Observable<VideoTopicBean> getVideoTopic(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize, @Query("userId") String userId);


    /**
     * 社区首页-关注列表
     */
    @GET("/lbs/gs/home/mySubscribersList")
    Observable<SubscribersListBean> getSubscribersList(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 社区首页-关注-可能认识的人
     */
    @GET("/lbs/gs/home/maybeKnow")
    Observable<AttentionManAndDynamicBean> getMaybeKnow(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 社区首页圈子-我的圈子
     */

    @GET("/lbs/gs/home/getMyGroupList")
    Observable<MainSocialCircleBean> getMyGroupList(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 圈子详情-圈子动态
     */
    @GET("/lbs/gsGroup/topicList")
    Observable<CircleTopicListBean> geToPicList(@Query("groupId") String groupId, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize);

    /**
     * 圈子详情-圈子动态最热
     */
    @GET("/lbs/gsGroup/topicList")
    Observable<CircleTopicListBean> gePicList(@Query("groupId") String groupId, @Query("pageNum") int pageNum, @Query("pageSize") int pageSize, @Query("orderByClause") String orderByClause);

    /**
     * 圈子-更多圈子
     */
    @GET("/lbs/gsGroup/selectByReferrerList")
    Observable<ByPageListBean> getByPageLis(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize, @Query("groupname") String groupname);

    /**
     * 圈子-（我的）申请入圈
     */
    @POST("/lbs/gsGroup/applyGroup")
    @FormUrlEncoded
    Observable<String> setApplyGroup(@Field("groupId") String groupId);

    /**
     * 圈子-（我的）退出圈子
     */
    @POST("/lbs/gsGroup/introductionGroupMembers")
    @FormUrlEncoded
    Observable<String> setIntroductionGroupMembers(@Field("id") String id);

    /**
     * 圈子-全部成员
     */
    @GET("/lbs/gsGroup/queryGroupMembers")
    Observable<SocialAllListMember> getQueryGroupMembers(@Query("pageSize") int pageSize, @Query("groupId") String groupId, @Query("pageNum") int pageNum);

    /**
     * 个人中心-我的个人主页
     */
    @GET("/lbs/gs/user/getMyGaUserExtVoById")
    Observable<SocialPersonalMyHomepageBean> getMyGaUserExtVoById();

    /**
     * 个人中心-我的个人主页
     */
    @GET("/lbs/gs/user/getGaUserExtVoById")
    Observable<SocialPersonalHomepageBean> getGaUserExtVoById(@Query("userId") String userId);

    /**
     * 个人中心送礼-礼物列表
     */
    @GET("/lbs/gsGive/selectByGsPresentPageList")
    Observable<GivePresentBean> getSelectByGsPresentPageList();

    /**
     * 个人主页
     */
    @GET("/lbs/gs/topic/selectTopicInfoListByUserId")
    Observable<HomeTopicListBean> getSelectTopicInfoListByUserId(@Query("pageNum") int pageNum, @Query("userId") String userId, @Query("pageSize") int pageSize);

    /**
     * 送礼
     */
    @POST("/lbs/gsGive/addOrUpdateGive")
    @FormUrlEncoded
    Observable<GiftResultBean> addOrUpdateGive(@Field("targetUserId") String targetUserId, @Field("targetId") String targetId);

    /**
     * 动态详情-评论
     */
    @GET("/lbs/comment/pageInfo")
    Observable<MainPersonalStateBean> getPageInfo(@Query("pageNum") String pageNum, @Query("pageSize") String pageSize, @Query("topicId") String topicId);

    /**
     * 动态详情
     */
    @GET("/lbs/gsGroup/topicById")
    Observable<GroupTopicListBean> getTopicById(@Query("id") String id);

    /**
     * 动态评论 回复评论/发布评论
     */
    @Headers("Content-Type: application/json")
    @POST("/lbs/gs/topic/saveGsTopicComment")
    Observable<PublishListBean> addComment(@Body RequestBody array);

    /**
     * 动态评论点赞 收藏 浏览
     */
    @POST("/lbs/gs/topic/saveGsTopicFavour")
    @FormUrlEncoded
    Observable<String> saveGsTopicFavour(@Field("topicId") String topicId, @Field("type") String type);

    /**
     * 动态评论取消点赞 收藏 浏览
     */
    @POST("/lbs/gs/topic/delGsTopicFavour")
    @FormUrlEncoded
    Observable<String> setDelGsTopicFavour(@Field("type") String type, @Field("topicId") String topicId);

    /**
     * 取消收藏
     */
    @POST("/lbs/participant/collectDelete")
    @FormUrlEncoded
    Observable<String> setCollectDelete(@Field("activityId") String activityId);

    /**
     * 动态点赞列表
     */
    @GET("/lbs/comment/give")
    Observable<SocialStateGiveListLikeBean> getGiveList(@Query("topicId") String topicId, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);

    /**
     * 动态浏览列表
     */
    @GET("/lbs/gsGroup/browseList")
    Observable<BrowseListBean> getBrowseList(@Query("id") String id, @Query("pageSize") String pageSize, @Query("pageNum") String pageNum);

    /**
     * 检查资料完善
     */
    @GET("/lbs/gs/user/queryIsPerfect")
    Observable<PerfectBean> getQueryIsPerfect();

    /**
     * 附近人员列表
     */
    @GET("/lbs/gs/selectMyNearby")
    Observable<SelectNearbyListBean> getSelectMyNearby(@Query("pageNum") int pageNum, @Query("pageSize") int pageSize, @Query("lng") String lng, @Query("lat") String lat, @Query("sex") String sex);

    /**
     * 话题详情
     */
    @GET("/lbs/gsGroup/topicInToGroupDetail")
    Observable<GroupDetailBean> getGroupDetail(@Query("topicId") String topicId, @Query("topicDesc") String topicDesc);

    /**
     * 浏览动态,名片
     */
    @POST("/lbs/gs/user/saveViewParameter")
    @FormUrlEncoded
    Observable<String> saveViewParameter(@Field("viewType") String viewType, @Field("id") String id, @Field("source") String source);

    /**
     * 相册查看
     */
    @POST("/lbs/gsGive/addOrUpdateReward")
    @FormUrlEncoded
    Observable<GiftResultBean> addOrUndateReward(@Field("targetId") String targetId);

}
